package com.ruicar.afs.cloud.apply.admin.manage.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ruicar.afs.cloud.common.modules.apply.enums.CarTypeEnum;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.List;

/**
 * @author: Lee
 * @date 2020-06-01 06:24:24
 * @description 部门授权区域
 */
@Data
@Accessors(chain = true)
@TableName(value = "sys_dept_auth_region", autoResultMap = true)
public class SysDeptAuthRegion implements Unique<SysDeptAuthRegion> {
    /**
     * 渠道id
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long channelId;
    /**
     * 部门id
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long deptId;
    /**
     * 区域名称
     */
    private String title;
    /**
     * 区域code
     */
    private String code;
    /**
     * 父code
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private String parentId;
    /**
     * 是否是父节点
     */
    private Boolean isParent;
    /**
     * 类型 枚举值:新车展业区域  二手车展业区域
     */
    private CarTypeEnum businessType;
    /**
     * 数据库存储使用，是否被选中,不能使用checked，因为checked是iview属性
     */
    private Boolean isChecked;

    /**
     * 子节点，页面回显展示用
     */
    @TableField(exist = false)
    private List<SysDeptAuthRegion> children;
    /**
     * 是否被选中,页面回显展示用
     */
    @TableField(exist = false)
    private Boolean checked;

    @Override
    public Wrapper<SysDeptAuthRegion> uniqueWrapper() {
        UpdateWrapper<SysDeptAuthRegion> updateWrapper = new UpdateWrapper<>();
        updateWrapper.lambda().eq(SysDeptAuthRegion::getCode, this.code);
        updateWrapper.lambda().eq(SysDeptAuthRegion::getBusinessType, this.businessType);
        updateWrapper.lambda().eq(SysDeptAuthRegion::getDeptId, this.deptId);
        return updateWrapper;
    }
}
